// 输入一棵二叉树的根节点，判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1，那么它就是一棵平衡二叉树。

#include<bits/stdc++.h>
using namespace std;

// dfs

// 执行用时：
// 8 ms
// , 在所有 C++ 提交中击败了
// 92.92%
// 的用户
// 内存消耗：
// 20.2 MB
// , 在所有 C++ 提交中击败了
// 92.06%
// 的用户

  struct TreeNode {
      int val;
      TreeNode *left;
     TreeNode *right;
      TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 };
 
class Solution {
public:
    bool b_res=true;
    bool isBalanced(TreeNode* root) {
        dfs(root);
        return b_res;
    }
    int dfs(TreeNode* root){
        if(root==nullptr){
            return 0;
        }
        int left=dfs(root->left);
        int right = dfs(root->right);
        if(abs(left-right)>1){
            b_res=false;
        }
        int res = max(left,right);
        ++res;
        return res;
    }
};